import axios from 'axios'
import store from '@/store'
import {ElMessage, ElNotification} from 'element-plus'
// import { isCheckTimeout } from '@/utils/auth'
import {Base64} from 'js-base64'

const service = axios.create({
    // baseURL: process.env.VUE_APP_BASE_API,
    baseURL: 'https://rop.sdu.edu.cn/api/v1/',
    // baseURL: 'http://localhost:3000/v1/',
    timeout: 5000
})

// 请求拦截器
service.interceptors.request.use(
    config => {
        // 在这个位置需要统一的去注入token
        if (store.getters.token) {
            // 如果token存在 注入token
            config.headers.Authorization = 'Basic ' + Base64.encode(store.getters.token + ':')
        }
        return config // 必须返回配置
    },
    error => {
        return Promise.reject(error)
    }
)

// 响应拦截器
service.interceptors.response.use(
    response => {
        const {status, msg, data} = response
        //   要根据success的成功与否决定下面的操作
        if (status === 200) {
            return data
        } else {
            if (msg instanceof Array) {
                // msg 是数组
                // 将数组元素合并为一个字符串，并用换行符(\n)分隔
                const messageLines = data.msg.map(line => `<p>${line}</p>`)
                const messageHtml = messageLines.join('<br />')
                ElNotification({
                    title: 'Error',
                    message: messageHtml, // 注意：这里假设 ElNotification 支持 HTML
                    type: 'error',
                    dangerouslyUseHTMLString: true // 如果 ElNotification 支持这个选项，启用它以允许 HTML 渲染
                })
            } else {
                // msg 不是数组
                ElNotification({
                    title: 'Error',
                    message: data.msg, // 注意：这里假设 ElNotification 支持 HTML
                    type: 'error',
                    dangerouslyUseHTMLString: true // 如果 ElNotification 支持这个选项，启用它以允许 HTML 渲染
                })
            }
            return response
        }
    },
)

export default service
